Subject: Updated RFC 1434 FSMs

From: "Steve Klein (254-5623)" <[email-masked]>
Date: Mon, 24 Jan 94 19:22:50 EST

Attached to this note are the RFC 1434 FSMs updated with the differences
between RFC 1434 and the 6611 implementation as described in Roy Dixon's
note to the AIWDLSW mail exploder dated 1 Nov 93.  I was going to
incorporate these additions into the FSMs we produce as part of the DLSw
standard, pending approval from members of the Connect siglet.  Please
look them over and let me know if these changes are OK for the standard.

The changes are indicated with a '1' in column 1.  I intend to keep
these revision codes in the FSMs so that the differences between the
standard and RFC 1434 easily identifiable.  As changes are made we
will use a new revision code for identifying the source of the change.

Steve

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 DLSw State Machines
 -------------------

 SSP Message Types:

     Command           Function                       Hex Value
     -------           --------                       ---------
     CANUREACH         Can U Reach Station            x'03'
     ICANREACH         I Can Reach Station            x'04'
     REACH_ACK         Reach Acknowledgment           x'05'
     DGRMFRAME         Datagram Frame (See note)      x'06'
     XIDFRAME          XID Frame                      x'07'
     CONTACT           Contact Remote Station         x'08'
     CONTACTED         Remote Station Contacted       x'09'
     RESTART_DL        Restart Data Link              x'10'
     DL_RESTARTED      Data Link Restarted            x'11'
     INFOFRAME         Information (I) Frame          x'0A'
1    ENTER_BUSY        Enter Busy                     x'0C'
1    EXIT_BUSY         Exit Busy                      x'0D'
     HALT_DL           Halt Data Link                 x'0E'
     DL_HALTED         Data Link Halted               x'0F'
     NETBIOS_NQ        NetBIOS Name Query             x'12'
     NETBIOS_NR        NetBIOS Name Recognized        x'13'
     DATAFRAME         Data Frame (See note)          x'14'
1    HALT_DL_NOACK     Halt Data Link with no Ack     x'19'
     NETBIOS_ANQ       NetBIOS Add Name Query         x'1A'
     NETBIOS_ANR       NetBIOS Add Name Response      x'1B'
1    UNDEFINED         Retired - do not use           x'1D'
1    TEST_CIRCUIT_REQ  Test Circuit Request           x'7A'
1    TEST_CIRCUIT_RSP  Test Circuit Response          x'7B'

 DLSw States:

     State Name            Description
     ----------            -----------
     CIRCUIT_ESTABLISHED   The end-to-end circuit has been
                           established.  At this time LLC Type 1
                           services are available from end-to-end.
     CIRCUIT_PENDING       The target DLS is awaiting a REACH_ACK
                           response to an ICANREACH message.
     CIRCUIT_RESTART       The DLS that originated the reset is
                           awaiting the restart of the data link
                           and the DL_RESTARTED response to a
                           RESTART_DL message.
     CONNECTED             The end-to-end connection has been
                           established thereby allowing LLC Type 2
                           services from end-to-end in addition to
                           LLC Type 1 services.
     CONNECT_PENDING       The origin DLS is awaiting the CONTACTED
                           response to a CONTACT message.
     CONTACT_PENDING       The target DLS is awaiting the
                           DLC_CONTACTED confirmation to a DLC_CONTACT
                           signal (i.e., DLC is waiting for a UA
                           response to an SABME command).
     DISCONNECTED          The initial state with no circuit or
                           connection established, the DLS is awaiting
                           either a CANUREACH, an ICANREACH, a
                           NETBIOS_NQ, or a NETBIOS_NR message.
     DISCONNECT_PENDING    The DLS that originated the disconnect
                           is awaiting the DL_HALTED response to a
                           HALT_DL message.
     HALT_PENDING          The remote DLS is awaiting the DLC_DL_HALTED
                           indication following the DLC_HALT_DL request
                           (i.e., DLC is waiting for a UA response to a
1                          DISC command), due to receiving a HALT_DL
1                          message.
1    HALT_PENDING_NOACK    The remote DLS is awaiting the DLC_DL_HALTED
1                          indication following the DLC_HALT_DL request
1                          (i.e., DLC is waiting for a UA response to a
1                          DISC command), due to receiving a
1                          HALT_DL_NOACK message.
     RESTART_PENDING       The remote DLS is awaiting the DLC_DL_HALTED
                           indication following the DLC_HALT_DL request
                           (i.e., DLC is waiting for a UA response to a
                           DISC command), and the restart of the data
                           link.
     RESOLVE_PENDING       The target DLS is awaiting either the
                           DLC_DL_STARTED indication following the
                           DLC_START_DL reqest (i.e., DLC is waiting
                           for a Test response as a result of sending a
                           Test command), or a NB_Name_Recognized
                           frame in response to a NB_Name_Query frame.

 DLC Events:

     Event Name      Description
     ----------      -----------
     DLC_CONTACTED   Contact Indication:  DLC has received an SABME
                     command and will send a UA response, or DLC has
                     received a UA response as a result of sending an
                     SABME command.
     DLC_DGRM        Datagram Indication:  DLC has received a UI frame.
     DLC_ERROR       Error condition indicated by DLC:  Such a
                     condition occurs when a DISC command is received
                     or when DLC experiences an unrecoverable error.
     DLC_INFO        Information Indication:  DLC has received an
                     Information (I) frame.
     DLC_DL_HALTED   Data Link Halted Indication:  DLC has
                     received a UA response to a DISC command.
     DLC_DL_STARTED  Data Link Started Indication:  DLC has
                     received a Test response from the null SAP.
     DLC_RESET       Reset Indication:  DLC has received an SABME
                     command during the time a connection is
                     currently active and has responded with DM.
     DLC_RESOLVE_C   Resolve Command Indication:  DLC has received
                     a Test command addressed to the null SAP, or an
                     XID command addressed to the null SAP.
     DLC_XID         XID Indication:  DLC has received an XID command
                     or response to a non-null SAP.

 DLC Actions:

     Action Name     Description
     -----------     -----------
     DLC_CONTACT     Contact Station Request:  DLC will send a SABME
                     command.
     DLC_DGRM        Datagram Request:  DLC will send a UI frame.
     DLC_ENTER_BUSY  Enter Link Station Busy:  DLC will send an
                     RNR supervisory frame.
     DLC_EXIT_BUSY   Exit Link Station Busy:  DLC will send an RR
                     supervisory frame.
     DLC_HALT_DL     Halt Data Link Request:  DLC will send a DISC
                     command.
     DLC_INFO        Information Request:  DLC will send an I frame.
     DLC_RESOLVE_R   Resolve Response Request:  DLC will send a
                     Test response or XID response from the null SAP.
     DLC_START_DL    Start Data Link Request:  DLC will send a Test
                     command to the null SAP.
     DLC_XID         XID Request:  DLC will send an XID command or an
                     XID response.

 State Tables:

   DISCONNECTED State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive CANUREACH    | DLC_START_DL        | RESOLVE_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive ICANREACH    | Send REACH_ACK,     | CIRCUIT_ESTABLISHED  |
   |                      | DLC_RESOLVE_R       |                      |
   |                      | (See note 1)        |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive NETBIOS_NQ   | DLC_DGRM            | RESOLVE_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive NETBIOS_NR   | Send REACH_ACK,     | CIRCUIT_ESTABLISHED  |
   |                      | DLC_DGRM            |                      |
   |                      | (See note 2)        |                      |
   +----------------------+---------------------+----------------------+
   | DLC_RESOLVE_C        | Send CANUREACH      |                      |
   +----------------------+---------------------+----------------------+
1  | DLC_XID              | Send CANUREACH      |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | If NETBIOS          |                      |
   |                      | NAME_QUERY:         |                      |
   |                      |  Send NETBIOS_NQ,   |                      |
   |                      | Else:               |                      |
   |                      |  Send DATAFRAME     |                      |
   +----------------------+---------------------+----------------------+

    Note 1: The IBM 6611 will not send a Test response, but will send
            a Test command to the station that originated the resolve
            procedure (i.e., a DLC_START_DL will be issued) in order to
            start the data link.

    Note 2: The IBM 6611 will also send a Test command (i.e., a
            DLC_START_DL will be issued) to the station that originated
            the name resolution in order to start the data link.

   RESOLVE_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DL_STARTED       | Send ICANREACH      | CIRCUIT_PENDING      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            |                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | If NETBIOS          | If NETBIOS           |
   |                      | NAME_RECOGNIZED:    | NAME_RECOGNIZED:     |
   |                      |  Send NETBIOS_NR    |  CIRCUIT_PENDING     |
   |                      |  (See note 3)       |                      |
   |                      | Else:               |                      |
   |                      |  Send DATAFRAME     |                      |
   +----------------------+---------------------+----------------------+

    Note 3: The IBM 6611 will also send a Test command in order to
            start the data link to the station that responded to the
            NAME_QUERY frame (i.e., a DLC_START_DL will be issued).

   CIRCUIT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive CONTACT      | DLC_CONTACT         | CONTACT_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive REACH_ACK    | If Connected:       | If Connected:        |
   |                      |  Send CONTACT       |  CONNECT_PENDING,    |
   |                      |                     | else:                |
   |                      |                     |  CIRCUIT_ESTABLISHED |
   +----------------------+---------------------+----------------------+
   | Receive XIDFRAME     | DLC_XID             |                      |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
1  | Receive ENTER_BUSY   | DLC_ENTER_BUSY      |                      |
   +----------------------+---------------------+----------------------+
1  | Receive EXIT_BUSY    | DLC_EXIT_BUSY       |                      |
   +----------------------+---------------------+----------------------+
   | DLC_CONTACTED        | DLC_ENTER_BUSY      |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_XID              | Send XIDFRAME       |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+

   CONNECT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive CONTACTED    | DLC_EXIT_BUSY       | CONNECTED            |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
1  | Receive ICANREACH    | Send HALT_DL_NOACK  |                      |
   +----------------------+---------------------+----------------------+
1  | Receive NETBIOS_NR   | Send HALT_DL_NOACK  |                      |
   +----------------------+---------------------+----------------------+
1  | Receive ENTER_BUSY   | DLC_ENTER_BUSY      |                      |
   +----------------------+---------------------+----------------------+
1  | Receive EXIT_BUSY    | DLC_EXIT_BUSY       |                      |
   +----------------------+---------------------+----------------------+
   | DLC_RESET            | Send RESTART_DL     | CIRCUIT_RESTART      |
   |                      | (See Note 4)        |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+

    Note 4: The IBM 6611 will also send a Test command in order to
            restart the data link to the station that sent the SABME
            commands (i.e., a DLC_START_DL will be issued).

   CIRCUIT_ESTABLISHED State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive CONTACT      | DLC_CONTACT         | CONTACT_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive XIDFRAME     | DLC_XID             |                      |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
1  | Receive ICANREACH    | Send HALT_DL_NOACK  |                      |
   +----------------------+---------------------+----------------------+
1  | Receive NETBIOS_NR   | Send HALT_DL_NOACK  |                      |
   +----------------------+---------------------+----------------------+
1  | Receive ENTER_BUSY   | DLC_ENTER_BUSY      |                      |
   +----------------------+---------------------+----------------------+
1  | Receive EXIT_BUSY    | DLC_EXIT_BUSY       |                      |
   +----------------------+---------------------+----------------------+
   | DLC_CONTACTED        | Send CONTACT        | CONNECT_PENDING      |
   |                      | DLC_ENTER_BUSY      |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | DLC_XID              | Send XIDFRAME       |                      |
   +----------------------+---------------------+----------------------+

   CONTACT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive RESTART_DL   | DLC_HALT_DL         | RESTART_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
1  | Receive ENTER_BUSY   | DLC_ENTER_BUSY      |                      |
   +----------------------+---------------------+----------------------+
1  | Receive EXIT_BUSY    | DLC_EXIT_BUSY       |                      |
   +----------------------+---------------------+----------------------+
   | DLC_CONTACTED        | Send CONTACTED      | CONNECTED            |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+

   CONNECTED State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive RESTART_DL   | DLC_HALT_DL         | RESTART_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive INFOFRAME    | DLC_INFO            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
1  | Receive ICANREACH    | Send HALT_DL_NOACK  |                      |
   +----------------------+---------------------+----------------------+
1  | Receive NETBIOS_NR   | Send HALT_DL_NOACK  |                      |
   +----------------------+---------------------+----------------------+
1  | Receive ENTER_BUSY   | DLC_ENTER_BUSY      |                      |
   +----------------------+---------------------+----------------------+
1  | Receive EXIT_BUSY    | DLC_EXIT_BUSY       |                      |
   +----------------------+---------------------+----------------------+
1  | Rec TEST_CIRCUIT_REQ | Snd TEST_CIRCUIT_RSP|                      |
   +----------------------+---------------------+----------------------+
   | DLC_RESET            | Send RESTART_DL     | CIRCUIT_RESTART      |
   |                      | (See Note 5)        |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | DLC_INFO             | Send INFOFRAME      |                      |
   +----------------------+---------------------+----------------------+

    Note 5: The IBM 6611 will also send a Test command in order to
            restart the data link to the station that sent the SABME
            command (i.e., a DLC_START_DL will be issued).

   CIRCUIT_RESTART State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive DL_RESTARTED | If Connected:       | If Connected:        |
   |                      |  Send CONTACT       |  CONNECT_PENDING,    |
   |                      |                     | else:                |
   |                      |                     |  CIRCUIT_ESTABLISHED |
   +----------------------+---------------------+----------------------+
1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DATAFRAME      |                      |
   +----------------------+---------------------+----------------------+

   DISCONNECT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive DL_HALTED    |                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | Send DL_HALTED      |                      |
   +----------------------+---------------------+----------------------+
1  | Receive HALT_DL_NOACK|                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DATAFRAME      |                      |
   +----------------------+---------------------+----------------------+

   RESTART_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
1  | Receive HALT_DL_NOACK|                     | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DL_HALTED        | Send DL_RESTARTED   | CIRCUIT_ESTABLISHED  |
   | (See Note 6)         |                     |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DATAFRAME      |                      |
   +----------------------+---------------------+----------------------+

    Note 6: The IBM 6611 will send a Test command in order to restart
            the data link to the target station (i.e., a DLC_START_DL
            will be issued) prior to sending the DL_RESTARTED message.

   HALT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
1  | Receive HALT_DL_NOACK|                     | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DL_HALTED        | Send DL_HALTED      | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send DL_HALTED      | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DATAFRAME      |                      |
   +----------------------+---------------------+----------------------+

1  HALT_PENDING_NOACK State
1
1  +----------------------+---------------------+----------------------+
1  |        Event         |      Action(s)      |      Next State      |
1  +----------------------+---------------------+----------------------+
1  | Receive DATAFRAME    | DLC_DGRM            |                      |
1  +----------------------+---------------------+----------------------+
1  | DLC_DL_HALTED        |                     | DISCONNECTED         |
1  +----------------------+---------------------+----------------------+
1  | DLC_ERROR            |                     | DISCONNECTED         |
1  +----------------------+---------------------+----------------------+
1  | DLC_DGRM             | Send DATAFRAME      |                      |
1  +----------------------+---------------------+----------------------+

 SSP Message Formats
 -------------------

     CONTROL MESSAGES (72 Bytes)
    +--------------------------------+--------------------------------+
    | Version Number                 | Reserved Field                 |
    +--------------------------------+--------------------------------+
    | Message Length                                                  |
    +--------------------------------+--------------------------------+
    | Remote Data Link Correlator                                     |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Remote DLC Port ID                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Reserved Field                                                  |
    +--------------------------------+--------------------------------+
    | Message Type                   | Reserved Field                 |
    +--------------------------------+--------------------------------+
    | Protocol ID                    | Header Number                  |
    +--------------------------------+--------------------------------+
    | Header Length                                                   |
    +--------------------------------+--------------------------------+
    | Reserved Field                                                  |
    +--------------------------------+--------------------------------+
    | Reserved Field                 | Message Type                   |
    +--------------------------------+--------------------------------+
    | Target MAC Address                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Origin MAC Address                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |            .                                 .                  |
    +--------------------------------+--------------------------------+
    | Origin Link SAP                | Target Link SAP                |
    +--------------------------------+--------------------------------+
    | Frame Direction                | Reserved Field                 |
    +--------------------------------+--------------------------------+
    | Message Length                                                  |
    +--------------------------------+--------------------------------+
    | DLC Header Length                                               |
    +--------------------------------+--------------------------------+
    | Origin DLC Port ID                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Origin Data Link Correlator                                     |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Origin Transport ID                                             |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Target DLC Port ID                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Target Data Link Correlator                                     |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Target Transport ID                                             |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Reserved Field                                                  |
    +--------------------------------+--------------------------------+
             (Even Byte)                      (Odd Byte)

     INFORMATION MESSAGE (16 Bytes)
    +--------------------------------+--------------------------------+
    | Version                        | Reserved Field                 |
    +--------------------------------+--------------------------------+
    | Message Length                                                  |
    +--------------------------------+--------------------------------+
    | Remote Data Link Correlator                                     |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Remote DLC Port ID                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Reserved Field                                                  |
    +--------------------------------+--------------------------------+
    | Message Type                   | Reserved Field                 |
    +--------------------------------+--------------------------------+
             (Even Byte)                      (Odd Byte)

   The Version Number is set to x'4B', indicating a numeric value of 75.

   The Header Length is x'00 48', indicating a numeric value of 72
   bytes.

   The Header Number is x'01', indicating a value of one.

   The Frame Direction field is set to x'01' for frames sent from the
   origin DLS to the target DLS, and is set to x'02' for frames sent
   from the target DLS to the origin DLS.

      Note:  The Remote Data Link Correlator and Remote DLC Port ID are
      set equal to the Target Data Link Correlator and Target DLC Port
      ID if the Frame Direction field is set to x'01', and are set equal
      to the Origin Data Link Correlator and Origin DLC Port ID if the
      Direction Field is set to x'02'.

   The Protocol ID field is set to x'42', indicating a numeric value of
   66.

   The Message Length field defines the number of bytes within the data
   field following the header.  Note that this value is specified in two
   different fields of the message header.

   The DLC Header Length is set to zero for SNA and is set to x'23' for
   NetBIOS datagrams, indicating a length of 35 bytes.  This includes
   the Access Control (AC) field, the Frame Control (FC) field,
   Destination MAC Address (DA), the Source MAC Address (SA), the
   Routing Information (RI) field (padded to 18 bytes), the Destination
   link SAP (DSAP), the Source link SAP (SSAP), and the LLC control
   field (UI).

   Reserved fields are set to zero upon transmission and should be
   ignored upon receipt.

     DATA LINK ID   (14 Bytes)
    +--------------------------------+--------------------------------+
    | Target MAC Address                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Origin MAC Address                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Origin Link SAP                | Target Link SAP                |
    +--------------------------------+--------------------------------+

     CIRCUIT ID   (8 Bytes)
    +--------------------------------+--------------------------------+
    | DLC Port ID                                                     |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Data Link Correlator                                            |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+

---

From: Gnanaprakasam Pandian <[email-masked]>
Date: Mon, 7 Feb 94 14:06:30 PST

Hi Steve,

Thanks for providing us with the FSM updates to highlight the
differences between the RFC and the 6611 implementation.

I would appreciate you offering explanations/answers to the following
questions that I have.

1. A TCP pipe failure is not treated as an input to the
   state machine. I understand that all the DLCs have to be
   closed/cleaned up and so forth. 
   Should the switch transition to HAL_TPENDING/RESTART_PENDING
   to do a graceful shut down of all the DLCs multiplexed through 
   that TCP connection.

2. HALT_DL_NOACK SSP message gets ejected everytime the switch is 
   hit with a NETBIOS_NR/ICANREACH in 
   CONNECT/CIRCUIT_ESTABILSHED/CONNECT_PENDING.
   Could you give an example scenario to explain this.

3. In CONNECTED state, is it possible to get a DLC_XID event 
   (which could cause an  XIDFRAME to be sent to the partner switch) 
   for non-activation XIDs?
   
4. In CONTACT_PENDING state do we have to take CONTACT message and move
   to CONNECTED. This is nothing but a connection initiation happening
   at both ends simultaneously and the messages crossed in flight.

   Similary in DISCONNECT_PENDING if you get HALT_DL
   should it move to DISCONNECTED. 

5. NETBIOS_AddNameQuery/NETBIOS_AddNameResponse.
   I do not see them being used in the fsms
   either as network or as dlc events.
   Could you explain the  actions for these events.

6. Do you carry RIF LF (MTU) field  in the SSP header
   and if so which field is used for that.

7. Which field in the SSP header is the virtual ring number.

8. For NETBIOS, SSP protocol requires to carry the whole rif in the
   header. Will it prevent RIF termination functionality?

9. TEST_CIRCUIT_REQ/TEST_CIRCUIT_RSP - what are they used for?

   Is it some kind of "keepalive" signal for the circuit
   between the switches or a "keepalive" for an end-to-end
   session between two devices connected to the switches.

   Is seems like it happens only in CONNECTED state and not
   in CIRCUIT_ESTABLISHED state. 
   By virtue of its name it signifies that the granularity is 
   at the circuit level.
   Do you see a problem here?

   Does it carry any parameter info to do the testing at the following
   granularity.
	- circuit level
	- session level
	- ring level ; When a ring connected to any one of the switches
          goes down it has to bring all the connections that
	  was flowing from/to the ring

10. I have not seen a lot of activity in the loop prevention siglet.
    Did you enhance the SSP protocol to detect loops when you are 
    doing rif termination.

11. In CONNECTED state I do not see DLC_ENTER_BUSY/DLC_EXIT_BUSY
    as events from the DLCs and probably they will send out 
    ENTER_BUSY/EXIT_BUSY SSP messages.
    I am assuming that they are not triggered by every RNR that comes
    from the DLC but only by the buffer congestion indicators.

thanks
	/pandian
	 cisco eng.

-- 
G. Pandian           + Gnanaprakasam Pandian      +
Cisco Systems, Inc.  + Software Engineer          +           
1525 O'Brien Drive   + Phone : (415)688-7684      +
Menlo Park,          + FAX   : (415)688-8282      +
CA 94026             + E-mail: [email-masked] +